package mx.ipn.presentacion.empleado;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.presentacion.ConexionConNegocios;
import mx.ipn.presentacion.Utilerias;
import mx.ipn.presentacion.empleado.ui.Ui_Asistencia;

import mx.ipn.presentacion.empleado.ui.Ui_EmpleadoPrincipal;
import mx.ipn.to.BitacoraAsistenciaTO;
import mx.ipn.to.EmpleadoTO;
import mx.ipn.to.FechaHoraTO;
import mx.ipn.to.PersonaTO;
import mx.ipn.to.PuestoTO;
import mx.ipn.to.UsuarioTO;
import mx.ipn.to.MotivoTO;
import java.util.Date;

import com.trolltech.qt.core.QDate;
import com.trolltech.qt.gui.QBrush;
import com.trolltech.qt.gui.QCalendarWidget;
import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QComboBox;
import com.trolltech.qt.gui.QTableWidget;
import com.trolltech.qt.gui.QTableWidgetItem;
import com.trolltech.qt.gui.QTextCharFormat;
import com.trolltech.qt.gui.QWidget;

public class ComportamientoAsistencia extends QWidget {
	String titulo = null;
	boolean banderaBaja = false;
	boolean banderaModificar = false;
	boolean banderaConsulta = false;
	boolean eventoBotonValor = false;
	Ui_Asistencia asistencia = null;
	Ui_Asistencia empleado = null;
	UsuarioTO usuarioTO = null;
	BitacoraAsistenciaTO[] arrBitacoraAsistenciaTO = null;

	FabricaDeDAOs fabrica = FabricaDeDAOs.getFabricaDeDAOs(1);
	MotivoTO motivosTO;
	EmpleadoTO[] arrEmpleadoTO;
	EmpleadoTO empleado2TO;
	BitacoraAsistenciaTO bitacoraAsisTO = null;

	EmpleadoTO[] arrJefeTO = null;
	PuestoTO[] arrPuestoTO = null;

	Date rInicio = null;
	Date rFin = null;

	public void agregarAsistencia(Ui_EmpleadoPrincipal ui, UsuarioTO usuarioTO) {

		this.usuarioTO = usuarioTO;

		if (arrBitacoraAsistenciaTO != null) {
			if (arrBitacoraAsistenciaTO[0].getTipoError() != 0) {
				Utilerias.mostrarMensajeError(this, arrBitacoraAsistenciaTO[0]);
			}
		}

		preparaVentana(ui);

		asistencia.pushButtonValorAsistencia.setText("&Establecer");
		if (eventoBotonValor == false) {
			asistencia.pushButtonValorAsistencia.clicked.connect(this,
					"botonEstablecer()");
			eventoBotonValor = true;
			asistencia.comboBoxTipoAtributoAsistencia.currentIndexChanged
					.connect(this, "cambioComboMotivo2(int)");
			asistencia.comboBoxTipoAtributoAsistencia.currentIndexChanged
					.emit(-1);
			asistencia.comboBoxTipoAtributoAsistencia.setEnabled(false);
		}

	}

	public void consultarAsistencia(Ui_EmpleadoPrincipal ui, UsuarioTO usuarioTO) {

		this.usuarioTO = usuarioTO;

		
		if (arrBitacoraAsistenciaTO != null) {
			if (arrBitacoraAsistenciaTO[0].getTipoError() != 0) {
				Utilerias.mostrarMensajeError(this, arrBitacoraAsistenciaTO[0]);
			}
		}

		preparaVentana(ui);

		asistencia.pushButtonValorAsistencia.setVisible(false);
		asistencia.groupBoxAtributosAsistencia.setVisible(false);
		asistencia.pushButtonValorAsistencia.setText("&Establecer");
		if (eventoBotonValor == false) {
			asistencia.pushButtonValorAsistencia.clicked.connect(this,
					"botonEstablecer()");
			eventoBotonValor = true;
			asistencia.comboBoxTipoAtributoAsistencia.currentIndexChanged
					.connect(this, "cambioComboMotivo2(int)");
			asistencia.comboBoxTipoAtributoAsistencia.currentIndexChanged
					.emit(-1);
			asistencia.comboBoxTipoAtributoAsistencia.setEnabled(false);
		}


	}

	public void preparaVentana(Ui_EmpleadoPrincipal ui) {
		if (asistencia == null) {
			asistencia = new Ui_Asistencia();
			asistencia.setupUi(ui.centralwidget);
			asistencia.dockWidgetAsistencia.setHidden(false);
			ui.gridLayout.addWidget(asistencia.dockWidgetAsistencia);
			asistencia.dockWidgetAsistencia.setWindowTitle(titulo);
			empleado = asistencia;

			motivosTO = fabrica.getMotivoDAO().selectMotivoActivoByTipo(
					(short) 2);

			asistencia.pushButtonMostrarAsistencia.clicked.connect(this,
					"botonMostar()");

			llenarComboMotivo(asistencia.comboBoxMostrarTipoAsistencia);
			llenarComboMotivo(asistencia.comboBoxTipoAtributoAsistencia);

			limpiarAsistencia();

			eventosGenerales();

			bloqueaComponentes();

			asistencia.pushButtonCancelarAsistencia.clicked.connect(this,
					"botonCancelar()");

		} else
			asistencia.dockWidgetAsistencia.setHidden(false);

		empleado.tableWidgetResultadoEmpleado2.disconnect();
		llenarTabla(empleado.tableWidgetResultadoEmpleado2);
		empleado.tableWidgetResultadoEmpleado2.cellChanged.connect(this,
				"slotNoEditarTabla(int,int)");
		empleado.tableWidgetResultadoEmpleado2.clicked.connect(this,
				"seleccionCelda()");
		empleado.comboBoxBuscarEmpleado2.currentIndexChanged.connect(this,
				"seleccionBusqueda(int)");
		empleado.comboBoxBuscarEmpleado2.setCurrentIndex(-1);
	}

	public void limpiarAsistencia() {

	}

	public void botonMostar() {
		if (bitacoraAsisTO != null)
			dibujaCalendario(bitacoraAsisTO, (short) 0);

		bitacoraAsisTO = fabrica
				.getBitacoraAsistenciaDAO()
				.selectByRangoFechaMotivoEmpleado(
						FechaHoraTO.getFecha("1971/01/01"),
						FechaHoraTO.getFecha("3000/01/01"),
						motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
								.currentIndex()], empleado2TO.getIdEmpleado());

		if (bitacoraAsisTO != null) {
			dibujaCalendario(bitacoraAsisTO, (short) 1);
		}
	}

	public void eventosGenerales() {

	}

	public void bloqueaComponentes() {

	}

	public void botonCancelar() {
		asistencia.dockWidgetAsistencia.setHidden(true);
	}

	public void botonEstablecer() {
		if (empleado2TO != null) {
			BitacoraAsistenciaTO bitAsisTO = fabrica.getBitacoraAsistenciaDAO()
					.selectByRangoFechaEmpleadoConsiderada(
							FechaHoraTO.getFecha(asistencia.dateEditAsistencia
									.text()),
							FechaHoraTO.getFecha(asistencia.dateEditAsistencia
									.text()), empleado2TO.getIdEmpleado(),
							false);
			if (bitAsisTO != null) {
				BitacoraAsistenciaTO enviarTO = new BitacoraAsistenciaTO();
				
				enviarTO.setIdOperacion(bitAsisTO.getListIdoperacion()[0]);
				enviarTO.setConsiderada(false);
				enviarTO.setFecha(bitAsisTO.getListFecha()[0]);
				enviarTO.setDescripcion(asistencia.textEditDescripcionAsistencia.toPlainText());
				enviarTO.setIdMotivo(motivosTO.getListIdMotivo()[asistencia.comboBoxTipoAtributoAsistencia.currentIndex()]);
				enviarTO.setIdEmpleado(empleado2TO.getIdEmpleado());
				enviarTO.setIdUsuario(usuarioTO.getIdUsuario());
				
				fabrica.getBitacoraAsistenciaDAO().updateBitacoraAsistencia(enviarTO);
				
				arrEmpleadoTO = null;
				empleado2TO = null;
				dibujaCalendario(bitacoraAsisTO, (short) 0);
				bitacoraAsisTO = null;
				preparaVentana(null);
				asistencia.comboBoxTipoAtributoAsistencia.setCurrentIndex(-1);
				asistencia.comboBoxTipoAtributoAsistencia.setEnabled(false);
				asistencia.comboBoxMostrarTipoAsistencia.setCurrentIndex(-1);
				asistencia.pushButtonValorAsistencia.setEnabled(false);
				asistencia.textEditDescripcionAsistencia.clear();
			}
		}
	}

	public void cambioComboMotivo(int indice) {
		if (indice > -1) {

		}
	}

	public void cambioComboMotivo2(int indice) {
		if (indice > -1) {
			asistencia.pushButtonValorAsistencia.setEnabled(true);
		} else
			asistencia.pushButtonValorAsistencia.setEnabled(false);
	}

	public void llenarTablaBasico(QTableWidget tabla, EmpleadoTO elementoTO,
			int x) {

		QTableWidgetItem __item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getNss()));
		tabla.setItem(x, 0, __item);

		__item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getPersonaTO().getNombre()));
		tabla.setItem(x, 1, __item);

		__item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getPersonaTO().getApellidoPaterno()));
		tabla.setItem(x, 2, __item);

		__item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getPersonaTO().getApellidoMaterno()));
		tabla.setItem(x, 3, __item);

		if (elementoTO.getPersonaTO().isSexo() == false) {
			__item = new QTableWidgetItem();
			__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
					"Empleado", "Masculino"));
			tabla.setItem(x, 4, __item);
		} else {
			__item = new QTableWidgetItem();
			__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
					"Empleado", "Femenino"));
			tabla.setItem(x, 4, __item);
		}

		__item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getPuestoTO().getNombre()));
		tabla.setItem(x, 5, __item);

		__item = new QTableWidgetItem();
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado", elementoTO.getPersonaTO().getCurp()));
		tabla.setItem(x, 6, __item);

		tabla.resizeColumnToContents(0);
		tabla.resizeColumnToContents(2);
		tabla.setColumnWidth(4, 65);
		tabla.setColumnWidth(1, 100);
		tabla.setColumnWidth(5, 100);
		tabla.setColumnWidth(6, 120);
	}

	public void llenarTabla(QTableWidget tabla) {
		tabla.clear();
		agregarTabla(tabla);
		if (arrEmpleadoTO != null) {
			tabla.setRowCount(arrEmpleadoTO.length);
			tabla
					.setSelectionMode(com.trolltech.qt.gui.QAbstractItemView.SelectionMode.SingleSelection);
			for (int x = 0; x < arrEmpleadoTO.length; x++) {
				llenarTablaBasico(tabla, arrEmpleadoTO[x], x);
			}
		}
	}

	public void agregarTabla(QTableWidget tableWidgetResultadoEmpleado2) {

		tableWidgetResultadoEmpleado2.clear();
		tableWidgetResultadoEmpleado2.setColumnCount(7);

		QTableWidgetItem __colItem = new QTableWidgetItem();
		__colItem.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "IMSS"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(0, __colItem);

		QTableWidgetItem __colItem1 = new QTableWidgetItem();
		__colItem1.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "Nombre"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(1, __colItem1);

		QTableWidgetItem __colItem2 = new QTableWidgetItem();
		__colItem2.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "Apellido Paterno"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(2, __colItem2);

		QTableWidgetItem __colItem3 = new QTableWidgetItem();
		__colItem3.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "Apellido Materno"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(3, __colItem3);

		QTableWidgetItem __colItem4 = new QTableWidgetItem();
		__colItem4.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "Sexo"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(4, __colItem4);

		QTableWidgetItem __colItem5 = new QTableWidgetItem();
		__colItem5.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "Puesto"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(5, __colItem5);

		QTableWidgetItem __colItem6 = new QTableWidgetItem();
		__colItem6.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Empleado2", "CURP"));
		tableWidgetResultadoEmpleado2.setHorizontalHeaderItem(6, __colItem6);

		tableWidgetResultadoEmpleado2.setRowCount(0);

		tableWidgetResultadoEmpleado2.resizeColumnsToContents();

	}

	public void seleccionCelda() {
		seleccionCelda(asistencia.tableWidgetResultadoEmpleado2);
	}

	public void seleccionCelda(QTableWidget tabla) {
		if (arrEmpleadoTO != null) {
			
			if (bitacoraAsisTO != null) {
				dibujaCalendario(bitacoraAsisTO, (short) 0);
			}
			
			BitacoraAsistenciaTO bitAsistTO = fabrica
					.getBitacoraAsistenciaDAO()
					.selectByRangoFechaEmpleadoConsiderada(
							FechaHoraTO.getFecha("1971/01/01"),
							FechaHoraTO.getFecha("3000/01/01"),
							arrEmpleadoTO[tabla.currentRow()].getIdEmpleado(),
							false);

			if (bitAsistTO != null) {
				rInicio = bitAsistTO.getListFecha()[0];
				rFin = bitAsistTO.getListFecha()[bitAsistTO.getListFecha().length - 1];
				asistencia.pushButtonValorAsistencia.setEnabled(true);
				asistencia.dateEditAsistencia.setDateRange(new QDate(
						obtenerAnio(rInicio), obtenerMes(rInicio),
						obtenerDia(rInicio)), new QDate(obtenerAnio(rFin),
						obtenerMes(rFin), obtenerDia(rFin)));

				asistencia.dateEditAsistencia.setMinimumDate(new QDate(
						obtenerAnio(rInicio), obtenerMes(rInicio),
						obtenerDia(rInicio)));

				asistencia.dateEditAsistencia.setMaximumDate(new QDate(
						obtenerAnio(rFin), obtenerMes(rFin), obtenerDia(rFin)));
				asistencia.dateEditAsistencia.setEnabled(true);
				asistencia.comboBoxTipoAtributoAsistencia.setEnabled(true);

			} else {
				asistencia.pushButtonValorAsistencia.setEnabled(false);
				asistencia.dateEditAsistencia.setEnabled(false);
				asistencia.comboBoxTipoAtributoAsistencia.setEnabled(false);

			}

			empleado2TO = null;

			empleado2TO = arrEmpleadoTO[tabla.currentRow()];
			asistencia.pushButtonValorAsistencia.setEnabled(false);
			asistencia.comboBoxMostrarTipoAsistencia.setCurrentIndex(-1);
			
		}
	}

	public void slotNoEditarTabla(int x, int y) {
		llenarTablaBasico(asistencia.tableWidgetResultadoEmpleado2,
				arrEmpleadoTO[x], x);
	}

	public void llenarComboJefe() {
		arrJefeTO = null;
		arrJefeTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
				"jefeDistintoActivo", EmpleadoTO[].class);
		if (arrJefeTO != null) {
			if (arrJefeTO[0].getTipoError() <= 0) {
				for (int x = 0; x < arrJefeTO.length; x++) {
					empleado.comboBoxValorEmpleado2.addItem(arrJefeTO[x]
							.getPersonaTO().getApellidoPaterno()
							+ " "
							+ arrJefeTO[x].getPersonaTO().getNombre()
							+ ";  " + arrJefeTO[x].getPuestoTO().getNombre());
				}
			}
		}
	}

	public void llenarComboPuesto(QComboBox combo) {
		arrPuestoTO = null;
		arrPuestoTO = (PuestoTO[]) ConexionConNegocios.invocaServicio(
				"obtenerPuestosActivos", PuestoTO[].class);
		if (arrPuestoTO != null) {
			combo.clear();
			if (arrPuestoTO[0].getTipoError() <= 0) {
				for (int x = 0; x < arrPuestoTO.length; x++) {
					combo.addItem(arrPuestoTO[x].getNombre() + ";  "
							+ arrPuestoTO[x].getTipoEmpleadoTO().getNombre());
				}
			}
			combo.setCurrentIndex(-1);
		}
	}

	public void seleccionBusqueda(int seleccion) {
		asistencia.comboBoxBuscarEmpleado2.disconnect();
		asistencia.comboBoxValorEmpleado2.disconnect();
		asistencia.comboBoxValor1Empleado2.disconnect();
		asistencia.lineEditvalor4Empleado2.disconnect();
		asistencia.pushButtonBuscarEmpleado2.disconnect();

		asistencia.labelvalor4Empleado2.setEnabled(false);
		asistencia.lineEditvalor4Empleado2.setEnabled(false);
		asistencia.labelvalor4Empleado2.setVisible(false);
		asistencia.lineEditvalor4Empleado2.setVisible(false);
		asistencia.lineEditvalor4Empleado2.disconnect();
		asistencia.lineEditvalor4Empleado2.setInputMask("");
		asistencia.lineEditvalor4Empleado2.setValidator(null);

		asistencia.comboBoxValorEmpleado2.clear();
		asistencia.comboBoxValorEmpleado2.setValidator(null);
		asistencia.labelValorEmpleado2.setVisible(false);
		asistencia.comboBoxValorEmpleado2.setVisible(false);

		asistencia.pushButtonBuscarEmpleado2.setEnabled(false);
		asistencia.pushButtonLimpiarEmpleado2.setEnabled(false);
		asistencia.pushButtonLimpiarEmpleado2.setVisible(true);

		asistencia.comboBoxValor1Empleado2.clear();
		asistencia.comboBoxValor1Empleado2.setValidator(null);
		asistencia.labelValor1Empleado2.setVisible(false);
		asistencia.labelValor1Empleado2.setEnabled(false);
		asistencia.comboBoxValor1Empleado2.setVisible(false);
		asistencia.comboBoxValor1Empleado2.setEnabled(false);

		asistencia.comboBoxBuscarEmpleado2.currentIndexChanged.connect(this,
				"seleccionBusqueda(int)");

		switch (seleccion) {
		case 0: {

			asistencia.labelvalor4Empleado2.setEnabled(true);
			asistencia.labelvalor4Empleado2.setVisible(true);
			asistencia.labelvalor4Empleado2.setText("CURP:");

			asistencia.lineEditvalor4Empleado2.setEnabled(true);
			asistencia.lineEditvalor4Empleado2.setVisible(true);
			asistencia.lineEditvalor4Empleado2
					.setInputMask(">AAAA-999999-A-AA-AAA-99;*");
			asistencia.lineEditvalor4Empleado2
					.setText("****-999999-*-**-***-99");

			asistencia.lineEditvalor4Empleado2.textChanged.connect(this,
					"cambioCURP(String)");
			asistencia.lineEditvalor4Empleado2.returnPressed.connect(this,
					"botonBuscarCURP()");
			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarCURP()");
			empleado.lineEditvalor4Empleado2.setFocus();
			break;
		}
		case 1: {

			empleado.labelvalor4Empleado2.setEnabled(true);
			empleado.labelvalor4Empleado2.setVisible(true);
			empleado.labelvalor4Empleado2.setText("NSS:");

			empleado.lineEditvalor4Empleado2.setEnabled(true);
			empleado.lineEditvalor4Empleado2.setVisible(true);
			empleado.lineEditvalor4Empleado2.setInputMask("99999999999;#");

			empleado.lineEditvalor4Empleado2.textChanged.connect(this,
					"cambioNSS(String)");
			empleado.lineEditvalor4Empleado2.returnPressed.connect(this,
					"botonBuscarNSS()");
			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarNSS()");
			empleado.lineEditvalor4Empleado2.setFocus();
			break;
		}
		case 2: {
			empleado.labelValorEmpleado2.setVisible(true);
			empleado.labelValorEmpleado2.setEnabled(true);
			empleado.labelValorEmpleado2.setText("Apellido Paterno:");
			empleado.comboBoxValorEmpleado2.setVisible(true);
			empleado.comboBoxValorEmpleado2.setEnabled(true);
			empleado.comboBoxValorEmpleado2.setCurrentIndex(-1);
			empleado.comboBoxValorEmpleado2.editTextChanged.connect(this,
					"cambioPaterno(String)");

			empleado.labelValor1Empleado2.setVisible(true);
			empleado.labelValor1Empleado2.setEnabled(false);
			empleado.labelValor1Empleado2.setText("Nombre(s)");
			empleado.comboBoxValor1Empleado2.setVisible(true);
			empleado.comboBoxValor1Empleado2.setEnabled(false);
			empleado.comboBoxValor1Empleado2.setCurrentIndex(-1);
			empleado.comboBoxValor1Empleado2.editTextChanged.connect(this,
					"cambioNombre(String)");

			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarNombrePaterno()");
			empleado.comboBoxValorEmpleado2.setFocus();
			break;
		}
		case 3: {
			empleado.labelValorEmpleado2.setVisible(true);
			empleado.labelValorEmpleado2.setEnabled(true);
			empleado.labelValorEmpleado2.setText("Puesto:");
			empleado.comboBoxValorEmpleado2.setVisible(true);
			empleado.comboBoxValorEmpleado2.setEnabled(true);
			llenarComboPuesto(empleado.comboBoxValorEmpleado2);
			empleado.comboBoxValorEmpleado2.setCurrentIndex(-1);
			empleado.comboBoxValorEmpleado2.editTextChanged.connect(this,
					"cambioPuesto(String)");

			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarPuesto()");
			empleado.comboBoxValorEmpleado2.setFocus();
			break;
		}
		case 4: {
			empleado.labelValorEmpleado2.setVisible(true);
			empleado.labelValorEmpleado2.setEnabled(true);
			empleado.labelValorEmpleado2.setText("Jefe Directo:");
			empleado.comboBoxValorEmpleado2.setVisible(true);
			empleado.comboBoxValorEmpleado2.setEnabled(true);
			llenarComboJefe();
			empleado.comboBoxValorEmpleado2.setCurrentIndex(-1);
			empleado.comboBoxValorEmpleado2.editTextChanged.connect(this,
					"cambioJefe(String)");

			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarJefe()");
			empleado.comboBoxValorEmpleado2.setFocus();
			break;
		}

		case 5: {

			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setVisible(false);
			empleado.pushButtonBuscarEmpleado2.clicked.connect(this,
					"botonBuscarTodos()");
			break;
		}

		}
	}

	public void botonBuscarCURP() {

		if (empleado.lineEditvalor4Empleado2.text().length() == 23) {
			String cadena = new String(empleado.lineEditvalor4Empleado2.text()
					.replace("-", ""));
			EmpleadoTO[] arrRespuestaTO = null;
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarEmpleadoActivoPorCURP", cadena,
					EmpleadoTO[].class);
			if (arrRespuestaTO != null) {
				if (arrRespuestaTO[0].getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, arrRespuestaTO[0]);
				} else {

					arrEmpleadoTO = null;
					arrEmpleadoTO = arrRespuestaTO.clone();
					limpiarAsistencia();
					eventosGenerales();
					preparaVentana(null);

				}
			}

		}
	}

	public void botonBuscarNSS() {
		if (empleado.lineEditvalor4Empleado2.text().length() == 11) {
			String cadena = new String(empleado.lineEditvalor4Empleado2.text());
			EmpleadoTO[] arrRespuestaTO = null;
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios
					.invocaServicio("encontrarEmpleadoActivoPorNss", cadena,
							EmpleadoTO[].class);
			if (arrRespuestaTO != null) {
				if (arrRespuestaTO[0].getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, arrRespuestaTO[0]);
				} else {

					arrEmpleadoTO = null;
					arrEmpleadoTO = arrRespuestaTO.clone();
					limpiarAsistencia();

					eventosGenerales();
					preparaVentana(null);
				}
			}
		}

	}

	public void botonBuscarNombrePaterno() {

		String nombre = new String(empleado.comboBoxValor1Empleado2.lineEdit()
				.text());
		String paterno = new String(empleado.comboBoxValorEmpleado2.lineEdit()
				.text());
		EmpleadoTO[] arrRespuestaTO = null;
		if (cambioTexto(empleado.comboBoxValor1Empleado2.lineEdit().text(), 80) == 0) {
			PersonaTO personaTO = new PersonaTO();
			personaTO.setNombre(nombre);
			personaTO.setApellidoPaterno(paterno);
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarEmpleadosActivosPorNombrePaterno", personaTO,
					EmpleadoTO[].class);
		} else {
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarEmpleadosActivosPorPaterno", paterno,
					EmpleadoTO[].class);
		}
		if (arrRespuestaTO != null) {
			if (arrRespuestaTO[0].getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, arrRespuestaTO[0]);
			} else {

				arrEmpleadoTO = null;
				arrEmpleadoTO = arrRespuestaTO.clone();
				limpiarAsistencia();

				eventosGenerales();
				preparaVentana(null);
			}
		}
	}

	public void botonBuscarPuesto() {
		empleado.comboBoxValorEmpleado2.lineEdit().returnPressed.emit();
		if (empleado.comboBoxValorEmpleado2.currentIndex() > -1) {
			EmpleadoTO[] arrRespuestaTO = null;
			short idPuesto = arrPuestoTO[empleado.comboBoxValorEmpleado2
					.currentIndex()].getIdPuesto();
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarEmpleadosActivosPorPuesto", idPuesto,
					EmpleadoTO[].class);
			if (arrRespuestaTO != null) {
				if (arrRespuestaTO[0].getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, arrRespuestaTO[0]);
				} else {
					arrEmpleadoTO = null;
					arrEmpleadoTO = arrRespuestaTO.clone();
					limpiarAsistencia();

					eventosGenerales();
					preparaVentana(null);

				}
			}
		}
		empleado.comboBoxValorEmpleado2.setCurrentIndex(-1);
	}

	public void botonBuscarJefe() {
		empleado.comboBoxValorEmpleado2.lineEdit().returnPressed.emit();
		if (empleado.comboBoxValorEmpleado2.currentIndex() > -1) {
			EmpleadoTO[] arrRespuestaTO = null;
			int idJefe = arrJefeTO[empleado.comboBoxValorEmpleado2
					.currentIndex()].getIdEmpleado();
			arrRespuestaTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarEmpleadosActivosPorJefe", idJefe,
					EmpleadoTO[].class);
			if (arrRespuestaTO != null) {
				if (arrRespuestaTO[0].getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, arrRespuestaTO[0]);
				} else {

					arrEmpleadoTO = null;
					arrEmpleadoTO = arrRespuestaTO.clone();
					limpiarAsistencia();

					eventosGenerales();
					preparaVentana(null);

				}
			}
		}
		empleado.comboBoxValorEmpleado2.setCurrentIndex(-1);
	}

	public void botonBuscarTodos() {
		arrEmpleadoTO = (EmpleadoTO[]) ConexionConNegocios.invocaServicio(
				"buscarEmpleadosActivos", EmpleadoTO[].class);

		limpiarAsistencia();

		eventosGenerales();
		preparaVentana(null);

	}

	public void botonLimpiar() {
		empleado.comboBoxBuscarEmpleado2.setCurrentIndex(-1);
	}

	public short cambioTexto(String cadena, int limite) {
		short res = (short) -1;
		if (cadena.length() < limite) {
			if (cadena != null && cadena.replace(" ", "") != ""
					&& cadena.replace(" ", "").length() > 0) {
				res = 0;

			} else {
				res = 1;
			}
		} else {
			res = 2;
		}
		return res;
	}

	public void cambioCURP(String cadena) {
		short res = cambioTexto(cadena, 23);
		if (res == 0) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 1) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 2) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(true);
		}
	}

	public void cambioNSS(String cadena) {
		short res = cambioTexto(cadena, 11);
		if (res == 0) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 1) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 2) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(true);
		}
	}

	public void cambioPaterno(String cadena) {
		short res = cambioTexto(cadena, 80);
		if (res == 0) {
			empleado.labelValor1Empleado2.setEnabled(true);
			empleado.comboBoxValor1Empleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(true);
			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
		} else if (res == 1) {
			empleado.labelValor1Empleado2.setEnabled(false);
			empleado.comboBoxValor1Empleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
		} else if (res == 2) {
			empleado.comboBoxValorEmpleado2.lineEdit().setText(
					cadena.substring(0, 79));
		}
	}

	public void cambioNombre(String cadena) {
		short res = cambioTexto(cadena, 80);
		if (res == 0) {

		} else if (res == 1) {

		} else if (res == 2) {
			empleado.comboBoxValor1Empleado2.lineEdit().setText(
					cadena.substring(0, 79));
		}
	}

	public void cambioPuesto(String cadena) {
		short res = cambioTexto(cadena, 80);
		if (res == 0) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(true);
		} else if (res == 1) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 2) {
			empleado.comboBoxValorEmpleado2.lineEdit().setText(
					cadena.substring(0, 79));
		}
	}

	public void cambioJefe(String cadena) {
		short res = cambioTexto(cadena, 162);
		if (res == 0) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(true);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(true);
		} else if (res == 1) {
			empleado.pushButtonBuscarEmpleado2.setEnabled(false);
			empleado.pushButtonLimpiarEmpleado2.setEnabled(false);
		} else if (res == 2) {
			empleado.comboBoxValorEmpleado2.lineEdit().setText(
					cadena.substring(0, 161));
		}
	}

	public void dibujaCalendario(BitacoraAsistenciaTO bitacoraAsistenciaTO,
			short operacion) {
		QDate fecha = new QDate();
		QColor color = new QColor();

		Date fin = FechaHoraTO
				.getFecha(bitacoraAsistenciaTO.getListFecha()[bitacoraAsistenciaTO
						.getListFecha().length - 1]);

		asistencia.calendarWidgetCalendario1.setSelectedDate(new QDate(
				obtenerAnio(fin), obtenerMes(fin), obtenerDia(fin)));

		// falta-amarillo
		if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 3
				&& motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
						.currentIndex()] == 3 && operacion == 1)
			color.setRgb(247, 220, 72);
		// descanso-Violeta
		else if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 1
				&& motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
						.currentIndex()] == 1 && operacion == 1)
			color.setRgb(255, 0, 166);
		// Permiso-azul
		else if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 2
				&& motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
						.currentIndex()] == 2 && operacion == 1)
			color.setRgb(102, 133, 255);
		// asistencia-verde
		else if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 4
				&& motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
						.currentIndex()] == 4 && operacion == 1)
			color.setRgb(175, 252, 105);
		// vacaciones-morado
		else if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 5
				&& motivosTO.getListIdMotivo()[asistencia.comboBoxMostrarTipoAsistencia
						.currentIndex()] == 5 && operacion == 1)
			color.setRgb(198, 104, 253);
		// DiaFestivo-naranja else if
		else if (bitacoraAsistenciaTO.getListMotivoTO()[0].getIdMotivo() == 6
				&& operacion == 1)
			color.setRgb(255, 109, 21);

		else
			color.setRgb(255, 255, 255);

		for (int x = 0; x < bitacoraAsistenciaTO.getListFecha().length; x++) {

			fecha.setDate(obtenerAnio(bitacoraAsistenciaTO.getListFecha()[x]),
					obtenerMes(bitacoraAsistenciaTO.getListFecha()[x]),
					obtenerDia(bitacoraAsistenciaTO.getListFecha()[x]));

			dibujaBasico(asistencia.calendarWidgetCalendario1, fecha, color);
		}
	}

	public void dibujaBasico(QCalendarWidget calendario, QDate fecha,
			QColor color) {
		QTextCharFormat formato = new QTextCharFormat();
		formato.setBackground(new QBrush(new QColor(color)));
		calendario.setDateTextFormat(fecha, formato);
	}

	public void clickCalendario(QDate fecha) {
		if (banderaConsulta != true && banderaBaja != true)
			asistencia.pushButtonValorAsistencia.setEnabled(true);
	}

	public int obtenerAnio(java.util.Date fecha) {

		String anio = FechaHoraTO.getFecha(fecha).toString();

		return Integer.parseInt(anio.substring(0, 4));
	}

	public int obtenerMes(java.util.Date fecha) {

		String mes = FechaHoraTO.getFecha(fecha).toString();

		return Integer.parseInt(mes.substring(5, 7));
	}

	public int obtenerDia(java.util.Date fecha) {

		String dia = FechaHoraTO.getFecha(fecha).toString();

		return Integer.parseInt(dia.substring(8, dia.length()));
	}

	public void llenarComboMotivo(QComboBox combo) {
		if (motivosTO != null) {
			combo.clear();
			for (int x = 0; x < motivosTO.getListIdMotivo().length; x++) {
				combo.addItem(motivosTO.getListNombre()[x]);
			}

			combo.setCurrentIndex(-1);
		}
	}
}
